package user

import "context"

// Repository 用户仓库接口
type Repository interface {
	// 创建用户
	Create(ctx context.Context, user *User) error

	// 根据ID获取用户
	GetByID(ctx context.Context, id uint) (*User, error)

	// 根据用户名获取用户
	GetByUsername(ctx context.Context, username string) (*User, error)

	// 根据邮箱获取用户
	GetByEmail(ctx context.Context, email string) (*User, error)

	// 更新用户
	Update(ctx context.Context, user *User) error

	// 获取用户列表
	List(ctx context.Context, offset, limit int) ([]*User, int64, error)

	// 删除用户
	Delete(ctx context.Context, id uint) error

	// 检查用户名是否存在
	ExistsByUsername(ctx context.Context, username string) (bool, error)

	// 检查邮箱是否存在
	ExistsByEmail(ctx context.Context, email string) (bool, error)
}
